home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PCMania 32
/
PCMania CD32_2.iso
/
sharewar
/
emula
/
zx81
/
xtender.txt
< prev
next >
Wrap
Text File
|
1991-11-14
|
29KB
|
601 lines
-------------------------------------------------------------------------------
**** XTENDER ZX81 EMULATOR -- Very Preliminary Version 0.14 ****
by Carlo Delhez, November 1991
-------------------------------------------------------------------------------
This file is in 80-column ASCII format. Use an ASCII editor to read the
contents, import into your favourite word processor or copy directly to
your printer (approximately 10 pages @ 60 lines/page).
-------------------------------------------------------------------------------
NOTE: This programme is in a VERY early stage of development. Please keep
this in mind when reading the manual and running the programme. If
you are interested, look out for improved future versions!
All remarks and suggestions regarding XTender are welcome.
PROGRAMME DESCRIPTION
XTender is - stated very accurately - a Z80 Emulator in a Sinclair ZX81
environment, written for MS/DOS machines with a standard graphics adapter
(Hercules, CGA, PCjr, EGA, MCGA or VGA). The Z80 Emulator is able to execute
programmes written in the Z80 machine code language. The ZX81 environment
includes the original ZX81 ROM and additionally caters for `hardware
compatibility' (such as keyboard reading, screen output control and
redirecting of signals originally heading for devices such as tape and
lineprinter). The Z80 Emulator and the ZX81 environment are joined in a single
block of 8086 machine code, which - as a whole - shall be referred to as ZX81
Emulator, and is named XTender.
REGISTRATION
XTender is distributed as ShareWare. You are allowed to make copies for
other people, provided you copy ALL the files and do NOT make changes in
any one of these files. Use XTender for a trial period of 21 days and then
delete the files if you don't like to use the programme.
However, if you DO like to use XTender, please express your appreciation and
support my efforts by becoming a REGISTERED user. You will then receive a
nicely printed copy of this manual, you will be informed about new releases,
and can update to a more recent version for a small fee to cover my costs.
Registration also includes conversion of your programmes from tape to disk,
free technical support by the author and the possibility to obtain a
custom-made version of XTender to suit your specific hardware configuration.
Also, it may be nice to set up an XTender Users Group to exchange programmes
and ideas, or to create a large ZX81 programme libarary. All initiatives are
welcome!
To become a registered XTender user, send a cheque or money order worth
Hfl 50 (Holland), UK pound sterling 16 (United Kingdom) or US $ 30 (elsewhere)
made payable to J.L.Delhez, plus a note stating your name, address and
computer specs to me (address at the bottom of this document). The most recent
version of XTender on a 3.5" DS/DD floppy (3M) and a printed copy of this
manual will be dispatched you (sorry, no 5.25").
NOTE: Special permission needs to be requested from the author before
distributing XTender via Bulletin Boards or equivalent public domain
software distribution services. However, this text file may be
distributed freely without special permission.
COMPATIBILITY
Since the original ZX81 ROM in Z80 code is included (with only a few minor
changes, of no interest for ordinary use) almost complete software
compatibility is guaranteed. Almost, since only some VERY specific software
can obviously NOT be emulated: programmes using either standard or
non-standard input/output ports (e.g. the ear/mic-lines and lines connected
to external hardware devices not available on the PC such as sound-generators
or EPROM programmers; note however that the keyboard and printer input-lines
are emulated correctly), and programmes taking over the interrupt vector (e.g.
Hi-Res and ZX81 sprite programmes, although the characterset can be redefined
in the usual way) are NOT (yet) supported by XTender.
Apart from these exceptional applications, ANY programme running on the ZX81
should ALSO run on XTender.
COMPARISON
To name just a few advantages of XTender with respect to the ZX81: safe housing
in a well-stabilized computer (none of the tricky business with wobbling RAM
packs), full 64k RAM available (including POKEable ROM and 8-16k area),
reliable and fast data-storage (no more tapes!), the ZX81 display file can be
moved to any part of memory without a crash, machine code can also be executed
in the top 32k of memory (on the ZX81 only the bottom 32k could be used), easy
screen invert option, etc. etc.
A disadvantage may be operation speed. On slow machines, the processor
emulation becomes quite dull. On fast machines, the speed becomes far too
high for reasonable operation. Therefore, TWO versions of XTender are supplied:
a speed optimized version for slow machines and a user-variable-speed version
for fast machines. More about this in the next section.
SPEED CONSIDERATIONS
As mentioned in the previous section, XTender might be too slow or too fast
on your machine. As a solution, two versions of XTender are included. Let me
first try to explain with an example why one programme with fixed speed would
be insufficient.
I am developing XTender on a 33 MHz 386dx machine. On this machine, XTender
spends about 30% of total time for printing the display using the 18.2 Hz
interrupt, so 80% is left for Z80 emulation. Compared to the ZX81 itself,
which spends 75% of the time for writing the display, this is not much.
But taking into account the high speed of the processor, this is quite a lot.
Nonetheless, the speed of the emulation amounts to 400% (slow version) or
600% (fast version) of the original ZX81 in SLOW mode.
Now lets see what happens if you work on a slower machine, say 2 times slower.
Automatically, the computer spends twice the time on the screen display,
i.e. 60% of the total time. Only 40% of the time is left for Z80 emulation,
but in this time it can also do only half of the work the other processor
could do. Thus, the total speed with respect to the first case becomes
40%/80%/2 = 25%, i.e. with HALF the processor speed, the emulator gets FOUR
times slower (yielding an effective speed of 100% and 150% respectively).
Generally, you would like to have emulation speed proportional to the processor
speed of your computer. This means that you must cut down on screen output
so that it is restricted to, say, 30% of total time. This is in fact what
XTender does in the first second after start-up. It tests processor speed
and tries to adapt the screen output frequency to (18.2/N) Hz, with N an
integer (1,2,3,4,...) in order that less time is spent by the display
interrupt. The number N is stored at ZX81 address 37, so you increase or
decrease the screen frequency at will by POKEing this address.
All the above is nice for speeding up XTender, but what if you want to slow
it down on a fast machine? The screen frequency cannot be raised above 18.2 Hz,
so another process is needed for slowdown. The smoothest slowdown is obtained
by delaying each separate Z80 instruction. This is done in the slow version
of XTender and the delay can be changed by the user (ZX81 address 23).
More information about these facilities can be found in the section `Speeding
Up and Slowing Down'.
STARTING XTENDER
For running XTender, you need an MS/DOS machine with a standard graphics
adapter (Hercules, CGA, PCjr, EGA, MCGA or VGA) and about 256k of free memory
to store the programme and the required work space. Note that your MS/DOS
version is not important (or should not be!).
As said earlier, the disk contains two versions of XTender. These are called
XTENDERF.COM and XTENDERS.COM. The first is the fastest version and should be
used on slow machines. The second one is not speed-optimized, hence slower.
However, this one has the possibility to slow emulation down considerably and
should be used on (very) fast machines. The user must determine by experience
which one works best on his machine. My experience indicates that up to a
12 MHz AT or 16 MHz 386sx, the fast version works best. For faster machines,
the slow version seems better.
To start the programme, simply type
XTENDERF
or
XTENDERS
(whichever you prefer) at the DOS prompt. This will start up XTender. First,
the screen will go black and stay black during one second. This is the
processor speed test. Next, the screen should become completely white.
Depending on the speed of your computer, you will see some flashes or some
weird characters and text, but eventually the famous inverse-K-cursor should
appear and XTender is ready for use.
Xtender tries to determine what video card you have installed (by looking at
the current video mode) in order to make a destinction between Hercules and
non-Hercules. In Hercules, only a small portion of the display will be used,
in all other modes, the ZX81 screen occupies almost the entire display. If you
have CGA emulation on your Hercules card and want to use it with XTender, make
sure you do NOT start XTender with video mode 7 (you can see this, for example,
with Norton SysInfo).
KEYBOARD FACILTITIES
A problem for many users may be the keyboard: the ZX81 works with single
keypress entries (e.g. pressing 'P' gives 'PRINT'). For the time being, you
will need a ZX81 or ZX81 manual near your PC to look up all the special key
presses for keywords, punctuation marks, functions and graphics. In the
future, a help facility will be provided by XTender (under CTRL-F1).
The default ZX81 screen color is black characters on white background. For
games with a lot of graphics this may be nice, but for text handling, I find
the inverse more comfortable for the eyes. Press CTRL-F2 to change the display
from black on white to white on black and vice versa.
Some ZX81 (machine coded) programmes do not allow you to stop them using
Break (Shift-Space). On XTender, programmes can always be stopped using
CTRL-ESC. This will actually cause a jump to an address in ROM where a RST 8
for error D is located, and hence the stack is cleared, the error message is
displayed and you are back in Basic. Some programmes crash the ZX81 if you try
this, as they may have messed around with the system variables, Basic area,
screen or even with the ROM code. If CTRL-ESC causes a ZX81 `hangup', press
CTRL-ALT-ESC. This restores the original ROM code and subsequently executes
a RST 0. ANY programme can safely be aborted using CTRL-ALT-ESC. Note that
the PEEK values of addresses 23 and 37 are preserved!
For fun, enter the following commands:
POKE 7687,85 { causes `rulers' }
NEW { still rulers! }
RAND USR 0 { no solution... }
<CTRL-ALT-ESC> { cured! }
Avoid using CTRL-ESC in the Basic editor or when CBI Trace is active. In
general, CTRL-ESC should only be used when the normal Break is disabled.
If you use CTRL-ESC in the normal ZX81 editor, it will lock keyboard
operation. Press CTRL-ESC once more to get proper key response again.
In the CBI editor, CTRL-ESC merely produces a space character, i.e. does
not lock the keyboard.
KEYBOARD COMPATIBILITY
The ZX81 keyboard is totally different from the PC XT/AT keyboard. First
of all, the ZX81 has only 40 keys. These are arranged according to the
familiar QWERTY layout, yet - as you can imagine - 26 letter keys, 10
number keys, Shift, Space and NewLine (Enter) already make a grand total of
39 keys. The remaining 40th key is a full stop (`.'). So: all symbols are
hidden under Shifted keys and (to make things more complex) in a non-PC-like
fashion. The ZX81 works in UPPER CASE only, so in fact you have 39 Shift
options (barring Shift itself, all keys can be Shifted, including Space and
NewLine (Enter)). Symbols are really scattered around the keyboard (can you
imagine using Shift-`B' for `*' and Shift-`U' for `$' !?!) and you will really
need the help facility and some patience for locating the symbols.
For UNshifted keys, the XTender maps almost the entire PC keyboard onto
the ZX81 keyboard. Not only the 40 basic ZX81 keys, but also things like
the Cursor Keys, BackSpace and the Numeric Pad are mapped. For example,
if you press `Cursor Left', XTender will convert this to Shift-`5', the ZX81
equivalent. This makes editting (and sometimes also playing games) less
strenuous. The central key of the numeric pad (`5') generates Shift-Enter,
i.e. toggles Function mode. More special keys: the square brackets (`[..]')
become normal brackets (`(..)') and the single forward quote gives the
standard ZX81 double quote. The ESC key generates Shift-1 (Edit), i.e. brings
the current cursored BASIC line in the editor.
Also for SHIFTED keys, the emulator helps you a little bit. Pressing any one
of the Shift keys will always give you the ZX81-Shifted symbol (like Shift-`U'
for `$'). BUT, if you press ALT instead of SHIFT, you will get the PC-Shifted
symbol, so you can press Alt-`4' to get the $tring sign. Some non-trivial
ALTernatives are listed below:
ALT-`6' gives `**' (instead of `^')
ALT-`7' gives `AND' (instead of `&')
ALT-`[' gives `<=' (instead of `{')
ALT-`]' gives `>=' (instead of `}')
ALT-`'' gives `""' (instead of `"')
Note again, how the single forward quote (`'') is converted to a ZX81 double
quote (`"') whereas the PC double quote is converted to a ZX81 quadruple quote
(`""'). XTender effectively doubles quotes.
Finally, if CAPSLOCK is on, the effect of Shift is INVERTED for ALL keys (not
only the letter keys). So, pressing for example `B' with CAPSLOCK on gives `*',
and Shift-`B' gives `B'. Note that this can be nice for some games which use
the keys 5 through 8 for steering and do not allow you to press Shift. With
CAPSLOCK on you can use the arrow keys of the keyboard!
FILE MANAGEMENT
Programmes can be SAVEd and LOADed in a format compatible to QZ (version 2.0
or higher), a QL fileserver for the ZX81 (first launched December 1989,
version 2.0 introduced August 1991; nota bene: QL stands for Quantum Leap, a
68000-based multitasking computer, marketed by Sinclair in 1984). A detailed
description regarding the possibilities of QZ is omitted here. If you are
interested in QZ, please contact me in writing (address at the bottom of this
document).
The development of a QZ command interpreter for XTender is in preperation.
To SAVE or LOAD a programme, just type
SAVE "<name>"
LOAD "<name>"
which are the equivalents of the QZ commands
SAVE:P:<name>:
LOAD:P:<name>:
The files are SAVEd to and LOADed from the drive/path which was default when
XTender was started. Another drive/pathname canNOT be included in the filename.
The SAVEd programmes appear as `.P' files on the default drive/path.
LOADing a non-existing programme will NOT display any error. If you SAVE a
programme which already existed, it will simply be overwritten without any user
confirmation. Saving a file with a NAME of length zero results in the usual
error F. Originally, QZ filenames were at most 12 characters long. On the PC,
one is restricted to 8. So: only the first 8 characters of the SAVE/LOAD name
will be used. Do NOT include INVERSE characters in the name, since these are
used internally by the ZX81 to indicate the end of the filename.
Commands will be passed to the QZ server of XTender in a SAVE or LOAD
statement. The first character must be an asterisk (`*'). Currently, this
can only be used for quitting XTender. Typing
LOAD "*EXIT" or LOAD "*QUIT"
will stop XTender and return to DOS. Any other command after the `*' will
display error C (syntax error).
PRINTER OUTPUT
No printer driver is available as yet. This will be implemented in future
versions.
HIGH RESOLUTION
In 1983, a first attempt to High Resolution on the ZX81 was presented when the
High Resolution Toolkit by Richard Taylor was marketed. Later, companies like
Software Farm produced several games in High Resolution. Taking a closer look
at this 'High Resolution', one can easily see that it is not real Hi-Res: for
the 256 bit patterns which are possible for 8 successive pixels, at most 128
are available, i.e. more than half of the patterns cannot be used. The result
of this Semi Hi-Res may however still be quite satisfactory.
As yet, no Hi-Res is supported by XTender. This will be implemented in future
versions. Also, `real' hardware hi-res will be supported.
ROM AND 8-16K AREA
The ROM and 8-16k area are in fact also part of RAM, i.e. they are not POKE-
protected. This can be nice for making slight changes in the ZX81 ROM or for
using the 8-16k area for machine code utilities that can be loaded from disk.
At startup, the 8-16k area contains an old verion of ZX-ASSEMBLER-2, a
revised version of this well known Artic programme. In future version of
XTender, this will be replaced by CORAL BASIC INTERPRETER (CBI version 7.0)
The Assembler is started by typing:
RAND USR 8192
No further comments on the use of the Assembler are given here.
STOPPING
There is only one legal way to end your XTender session. A ZX81 LOAD or SAVE
command with an asterisk and some text return you to DOS, e.g.
LOAD "*Q"
CLOCK FREQUENCY
The effective clock frequency can be determined in serveral ways. First of
all, you can RUN a (long) BASIC programme which does not have any INPUT,
INKEY$, RND, PAUSE or similar commands (i.e. execution time must be fully
determinate and may not contain processor-independent loops). You can then
compare the execution time on XTender to the time which this same programme
requires on a ZX81.
The ZX81 runs at 3.2 MHz in FAST mode and at 0.8 MHz in SLOW mode. Supposing
a programme on XTender takes two times longer to execute than on the ZX81
in SLOW, the effective clock frequency is (0.8 MHz)/2 = 0.4 MHz.
Another way to find the clock frequency is to use a machine code test loop,
embracing a single instruction which is executed many (e.g. 65536) times.
If you then count the number of frames needed (and subtract the number of
frames needed for just the empty loop) you can get an idea of the clock
frequency of that specific instruction, provided you know the number of
T-cycles the Z80 would normally need for that same instruction.
A very good estimate of the emulated processor speed can be obtained by
LOADing the programme CLCKFREQ. This programme does some simple printing and
plotting, but the final result is a reliable measure for the average speed.
SLOWING DOWN OR SPEEDING UP
On slow machines, the performance of the emulator can be increased by reducing
the screen output frequency. This frequency is given by
F = (18.2 Hz)/(PEEK 37)
At startup, XTender tries to determine the best value for PEEK 37. POKEing a
higher/lower value yourself can result in a significant increase/decrease of
speed (test this with CLCKFREQ, see previous section). Note that a PEEK value
of 0 hass the same effect as a PEEK value of 1.
On fast machines the speed of the emulator can be reduced by POKEing address
23. The byte at this address is used as delay counter at each Z80 instruction.
Default value is 1, which gives (practically) no delay. A higher value will
quickly slow down emulation. Do not use zero: this effectively reacts as 256,
so you end up with an extremely slow emulator.
Example of SLOWDOWN on a 33 MHz 80386dx machine:
PEEK 23 Speed Frequency
1 425% 3.40 MHz
2 362% 2.88 MHz
5 246% 1.96 MHz
10 160% 1.28 MHz
20 95% 0.76 MHz
The slowdown only works if you are using XTENDERS (i.e. not with XTENDERF).
The speeding up by POKEing address 37 works with both versions.
Z80 EMULATION
As far as I have been able to test, all Z80 instructions are emulated
correctly: since the ZX81 ROM is the basis for XTender to function, the
latter statement must be true. Also, many ZX81 programmes have been
tested on XTender and all of them turned out to work without any problem!
(These programmes include (commercially marketed) games and utilities in
BASIC and in machine code!)
Some brief remarks for Z80 freaks:
* The Subtract flag of the Z80 flag-register (f) is NOT emulated. Many Z80
instructions alter this flag, but there is only one instruction which uses
the result, viz. DAA. Since DAA is used only once in the ZX81 ROM (where it
has been replaced by an equivalent non-standard Z80 instruction) and since
proper emulation of the Subtract Flag reduces operation speed of XTender, I
think this exclusion is a sensible decision. Note that, when XTender
encounters a DAA instruction, it performs a `Decimal Adjust After Addition'.
So, keep your fingers crossed!
Programmes using DAA : --- Reversi (only the machine coded version)
--- MCTT (Machine Code Testing Tool)
--- Frogger
If you should know of other programmes which use DAA, please tell me!
* The IN instructions are all neglected, except for requests for port $FE,
(the keyboard) and port $FB (the printer). Also, OUT instructions are
neglected. Note, however, that the instructions IND, INDR, INI, INIR, OUTD,
OTDR, OUTI and OTIR alter the registers BC and HL (and also (HL)'s)
appropriately!
* HALT waits for an interrupt. Interrupts are not emulated and therefore
HALT is made equal to NOP.
* Some instructions cannot be used for changing the ROM area (0-8k). These are:
LD (HL),A LD (DE),A
LD (HL),D LD (HL),E
LDIR
The reason for this is to protect the ROM against itself! The programmers of
the ZX81 ROM have made use of the write-protection of the 0-8k area for
simplifying their code (or is it a hitherto unknown bug of the ZX81 ROM ?).
So, XTender (which has no write-protection in the ROM area) would alter
its own code, which is (in general!) a bad thing. Therefore, the above
instructions are emulated such that they have no effect in the first 8k of
memory.
Note that this also protects the ROM against a programme like MCODER-2, which
does the same kind of nasty things to the ZX81 ROM-area...
WRITING PROGRAMMES
For the success of XTender and perhaps for a revival of the ZX81, I recommend
authors of new programmes (either in machine code or in BASIC) to write their
software such that it will run on both XTender and on the ZX81. As an
example, you could perform nice tricks with XTender by POKEing its ROM, but
that is not possible on the ordinary ZX81, i.e. INCOMPATIBLE! Please avoid such
tricks or - if they are absolutely necessary - clearly include a message
telling on which machine(s) the programme runs (ZX81, XTender, XTricator or
the Atari Emulator). I also advise to use processor independent delay loops
where necessary (mostly games and editors). Basically, these look like this:
REPEAT
SET CLOCK
BEGIN
PERFORM ACTION
END
REPEAT
READ CLOCK
UNTIL CERTAIN TIMELIMIT EXCEEDED
FOREVER
Programmes written this way are equally fast on every computer (unless the
ACTION part takes more time than given by CERTAIN TIMELIMIT). In fact, several
existing ZX81 programmes were really written this way and are consequently
not sped up by a fast emulator (only decelerated by a slow one...)!
For reading and setting the clock, make use of the system variable Frames.
Frames is a two-byte number, decrementing at 50 Hz. Please note that
(1) Frames is decremented in SLOW mode ONLY on the ZX81;
(2) Frames is decremented in FAST AND SLOW mode on XTender; it is
decremented by 2 or 3 each 55 ms, not by 1 each 20 ms. It is,
however, properly synchronized.
Also in BASIC programmes, use Frames (or PAUSE) instead of some empty FOR-NEXT
loop.
PROGRAMME TRANSPORTATION
Some trouble is caused by the fact that ZX81 programmes were usually stored on
tape instead of disk. Please write me for info on possible solutions!
OTHER ZX81 EMULATORS
The PC is not the only computer for which a ZX81 emulator has been written.
An equivalent ZX81 emulator has also been written for the SINCLAIR QL and for
the ATARI ST computers. The emulator for the Sinclair QL is called XTricator
and is written by myself. It is completely compatible to XTender as far
as file formats are concerned. This development of XTricator was started in
1989 and this programme offers far more possibilities than XTender (let alone
the multitasking capabilities of the QL!). But, future versions of XTender will
increasingly more resemble XTricator!
I have no personal experience with the emulator written for the ATARI, but
it seems that programmes running on that emulator can be LOADed directly
into XTender/XTricator and RUN without problems.
Note that the files with extension '81' on the ATARI emulator are compatible
to the 'P' files of XTender and XTricator.
It seems that the ATARI emulator has problems to LOAD files not SAVEd by
the emulator itself (again, I have no personal experience). As far as I know,
XTender/XTricator 'P' files cannot be converted to ATARI '81' files because of
this 'sensitivity'. It is ofcourse the virtue of XTender and XTricator that it
DOES work the other way round!
WARRANTY
If you come across a ZX81 programme which doesn't work on XTender and also
doesn't fall in any of the "incompatibility catagories" discussed in this
manual, please send me a copy of the programme on a 3.5" floppy. If XTender
is to blame, you will receive a new (repaired!) version of XTender for free.
ABOUT THE AUTHOR
I was born in 1967 and bought my first computer (guess what, it was a ZX81!)
in 1982. With no prior programming experience at all, I started writing simple
Basic programmes. After about one year, it appeared to me that Basic just
couldn't solve the problems I devised. So, I turned to Z80 machine code (with
obliging help of Toni Baker; that is, of her book). A whole new world of
possibilities opened up before my very eyes. High-speed compact code and access
to all system utilities at lowest level, what else does a programmer need?
Many Z80 programmes were born, and some of them were even published in
international magazines. In 1987, I decided to buy a QL (during sales) and
found this younger brother (sister?) just as interesting as the ZX81. It also
gave me a good excuse for learning 68000 machine code. As I saw that less and
less people were actually using the ZX81, I sought a way for elongating its
existence. I thought that (amongst other things) a ZX81 emulator for the QL
would be a good way to do so, and I started writing this programme in the end
of 1989. My present-day occupation as an engineer of physics obliged me to
buy an MS/DOS machine. In order to stay loyal to the absorbing machines made
by Sinclair, I decided to write a ZX81 emulator for MS/DOS. The 8086 is very
similar to the Z80, so I did not really have to learn a new language, only
a new OS. By now, in 1991, you can judge the result of my efforts. I sincerely
hope that many (former) ZX81 users will take some time to leap back in
history and (re)enjoy the overwhelming simplicity of the 64k, 8-bit, 3.2 MHz
Z80, black & white computer with 64x44 graphics resolution, which introduced
over a million people worldwide (including myself) to the wonderful world of
computing...
XTENDER RELEASE HISTORY
Version Date Remarks
< 1.00 < November 1991 Illegal preliminary versions, likely to contain
undocumented features and bugs. Use at your own
risk or write me to become a registered XTender
user.
1.00 > November 1991 First official release.
FINAL NOTES
All rights of XTender and this manual reserved by law (copyright);
Consequently: UNAUTHORIZED copying, hiring and lending prohibited
(please refer to section "Registration" for more details).
Just to keep the lawyers happy: ZX81, QL and QDOS are registered trademarks
of Sinclair Research Limited.
For more information on XTender, XTricator, QZ, ZX-Assembler-2, Coral Basic
Interpreter or ZX81 in general, do not hesitate to contact me at subjoined
address in writing:
Carlo Delhez,
Emmastraat 3,
4651 BV Steenbergen,
Netherlands.
Thank you for reading the manual & for using XTender !!
<*** End of File ***>